﻿//
//  Monkey Manager (Based on nVLC (by Roman Ginzburg))
//  Copyright (C) 2010 Victor Tereschenko (aka sibvic)
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
//     
// ========================================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

using ManagerDB;
using ManagerDB.Options;

using Sibvic.Command;
using Sibvic;

namespace MonkeyManager
{
    public class Controller : IDisposable
    {
        public Controller()
        {
            CommandExecutor = new CommandExecutor();

            string fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "database.xml");
            Options = OptionsFactory.ReadFromFile(fileName);
            if (Options == null)
                Options = OptionsFactory.Create();
            mBackuper = new DropboxSyncController(Options.DBFile, Options.BackupFile);
            mBackuper.UpdateOriginal();
        }

        DropboxSyncController mBackuper;
        public CommandExecutor CommandExecutor;
        public ManagerOptions Options;

        bool mDisposing = false;
        public void Dispose()
        {
            if (mDisposing)
                return;
            mDisposing = true;
            if (mBackuper != null)
                mBackuper.UpdateDropbox();
            CommandExecutor.Dispose();
        }
    }
}
